<%--
  Created by IntelliJ IDEA.
  User: Administrator
  Date: 2020/2/27
  Time: 20:03
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>用户信息统计模块</title>
    <!-- 1  引入 ECharts 文件 -->
    <script src="${pageContext.request.contextPath}/js/jquery-1.12.4.js"></script>
    <script src="${pageContext.request.contextPath}/js/echarts.js"></script>
    <script src="${pageContext.request.contextPath}/js/china.js"></script>
</head>
<body>
<!-- 2  为 ECharts 准备一个具备大小（宽高）的 DOM -->
<!--男女人数比例的图表-->
<div id="sexCount" style="width: 600px;height:400px;"></div>
<!--每一周注册人数变化的图表-->
<div id="registCount" style="width: 600px;height:400px;"></div>
<!--中国地图展示（各省份用户数）图表-->
<div id="china" style="width: 600px;height:400px;"></div>
<!--js代码-->
<script>
    // 就是通过 echarts.init 方法创建 Echarts对象  参数就是指明图形要展示的页面元素对象
    //图表一  男女比例表
    var firstChart = echarts.init(document.getElementById('sexCount'));
    //图表二  注册人数变化表
    var secondChart = echarts.init(document.getElementById('registCount'));
    //图表三  中国地图展示各省份用户数的图表表
    var threadChart = echarts.init(document.getElementById('china'));
    //ajax请求后台 获取男女人数数据  赋值给图表
    $.ajax({
        url:'${pageContext.request.contextPath}/cmfzUser/showEchartsByThread2',
        success:function (result) {
            //这里result返回的是一个map
            // map中封装了三个键值对 {"sex",list}{"count",list}{"province",list}
            // 并且三个list的泛型都是Map类型
            var data1 = result.sex;
            //处理data1  将其中的所有的key和value都取出到一个数组中备用
            var keys1 = [];     //x轴坐标的名字
            var values1 = [];    //x轴坐标项对应的数据
            $(data1).each(function (i,obj) {
                keys1.push(obj.sex);//list集合中的map的一个键是sex代表姓名 一个是value是数据
                values1.push(obj.value);
            })
            var data2 = result.count;
            //处理data2  将其中的所有的key和value都取出到一个数组中备用
            var keys2 = [];
            var values2 = [];
            $(data2).each(function (i,obj) {
                keys2.push(obj.week);//list集合中的map的一个键是week代表第几周 一个是value是数据
                values2.push(obj.value);
            })
            var data3 = result.province;
            // 分别指定图表的配置项和数据  result中包括三个图表的数据
            //第一张表  男女比例表
            var option1 = {
                //图表的标题
                title: {
                    text: '持明法洲用户男女人数比例图'
                },
                // 工具栏
                tooltip: {},
                // legend 传奇 在数学中指的是 系列
                // 在代码中 代表数据的类型
                legend: {
                    data:['人数']
                },
                // xAxis x轴坐标
                xAxis: {
                    data: keys1
                },
                // y 轴坐标 自动生成
                yAxis: {},
                // 给x轴赋值
                series: [{
                    // name 必须和 legend 中的配置一样
                    name: '人数',
                    // 定义是展示类型 bar柱状图 line折线图 pie 饼状图
                    type: 'bar',
                    // x轴坐标对应的坐标值  即是ajax请求返回的list集合
                    data: values1
                }]
            };
            //使用上面的配置项和数据显示图表
            firstChart.setOption(option1);

            //第二张表   用户注册量变化
            var option2 = {
                //图表的标题
                title: {
                    text: '持明法洲用户注册数据变化图'
                },
                // 工具栏
                tooltip: {},
                // legend 传奇 在数学中指的是 系列
                // 在代码中 代表数据的类型  注意同一个页面中 多个图表的legend的（data）值不能相同
                legend: {
                    data:['周注册量']
                },
                // xAxis x轴坐标
                xAxis: {
                    data: keys2
                },
                // y 轴坐标 自动生成
                yAxis: {},
                // 给x轴赋值
                series: [{
                    // name 必须和 legend 中的配置一样
                    name: '周注册量',
                    // 定义是展示类型 bar柱状图 line折线图 pie 饼状图
                    type: 'bar',
                    // x轴坐标对应的坐标值  即是ajax请求返回的list集合
                    data: values2
                }]
            };
            //C、使用上面的配置项和数据显示图表
            secondChart.setOption(option2);

            //第三张表   中国地图显示各省份用户数量
            var option3 = {
                title : {
                    text: '用户地区分布',
                    left: 'center'
                },
                tooltip : {
                    trigger: 'item'
                },
                legend: {
                    orient: 'vertical',
                    left: 'left',
                    data:['用户人数']
                },
                visualMap: {
                    min: 0,
                    max: 25000,
                    left: 'left',
                    top: 'bottom',
                    text:['高','低'],           // 文本，默认为数值文本
                    calculable : true
                },
                toolbox: {
                    show: true,
                    orient : 'vertical',
                    left: 'right',
                    top: 'center',
                    feature : {
                        mark : {show: true},
                        dataView : {show: true, readOnly: false},
                        restore : {show: true},
                        saveAsImage : {show: true}
                    }
                },
                series : [
                    {
                        name: '用户人数',
                        type: 'map',
                        mapType: 'china',
                        roam: false,
                        label: {
                            normal: {
                                show: false
                            },
                            emphasis: {
                                show: true
                            }
                        },
                        data:data3
                    }
                ]
            };
            //C、使用上面的配置项和数据显示图表
            threadChart.setOption(option3);
        }


    })
</script>
</body>
</html>
